/*
 * ============================================================================
 * Copyright Notice!
 * ----------------------------------------------------------------------------
 * This file contains proprietary and confidential information belonging to the
 * group of people involvled in developing this project.  Reproduction, disclosure 
 * or use without specific written authorization from project stake holders is 
 * prohibited. Please refer the readme.txt in project installation folder for more
 * specific contacts
 *
 * All rights reserved.
 * ============================================================================
 */
package edu.uwm.universitydb.service.student;

import java.util.List;

import edu.uwm.universitydb.framework.exception.DataAccessException;
import edu.uwm.universitydb.model.Student;

/**
 * <code>StudentService</type>
 * Service defining the contract for student related operations
 * 
 * @author Shyam Nair
 */
public interface StudentService
{
    /**
     * <code>addStudent(...)</code>
     * contract to add a student to DB
     * 
     * @param student
     * @return
     */
    boolean addStudent(final Student student) throws DataAccessException;
    
    /**
     * <code>removeStudent(...)</code>
     * Contract to remove s student from DB
     * 
     * @param studentSSN
     * @return
     */
    boolean removeStudent(final String studentSSN);
    
    /**
     * <code>updateStudent(...)</code>
     * contract to update a student to DB
     * 
     * @param student
     * @return
     */
    boolean updateStudent(final Student student) throws DataAccessException;
    
    /**
     * <code>searchStudentByName(...)</code>
     * returns the list of students with matching name
     * sorted by name
     * 
     * @param name
     * @return
     */
    List<Student> searchStudentByName(final String name);
    
    /**
     * <code>getAllStudents(...)</code>
     * returns all the students in db sorted by ssn
     * 
     * @return
     */
    List<Student> getAllStudents();
    
    /**
     * <code>getStudentBySSN(...)</code>
     * 
     * @param ssnN
     * @return
     */
    Student getStudentBySSN(final String ssnN);
}
/*
 * ============================================================================
 * Change History
 * ----------------------------------------------------------------------------
 * Apr 19, 2014   Shyam Nair
 * File created
 * ----------------------------------------------------------------------------
 */